/**
 *  Copyright 2010 ShenYang voole Co. Ltd.
 *  All right reserved. 
 */
package com.dianning.service;

import java.util.List;

import com.dianning.bean.Company;
import com.dianning.bean.Money;
import com.dianning.bean.Profile;
import com.dianning.bean.Resume;
import com.dianning.bean.UserDetail;
import com.dianning.bean.UserInfo;
import com.dianning.bean.Visitor;
import com.dianning.exception.DianningException;

/**
 * 功能描述:用户事务接口
 *
 * 创建日期 Apr 10, 2010
 *
 * @author zhangbaochao
 *
 * @version 1.0
 *
 */
public interface UserInfoService {
	/**
	 * 保存UserInfo对象
	 * 
	 * @param userInfo
	 * 			UserInfo对象
	 * @return UserInfo
	 * 			UserInfo对象
	 */
	public UserInfo createUserInfo(UserInfo userInfo,UserDetail userDetail,Resume resume,Company company,Money money,Profile profile) throws DianningException;
	
	/**
	 * 根据username获取UserInfo对象
	 * 
	 * @param username
	 * 			String
	 * @return UserInfo
	 * 			UserInfo对象
	 */
	public UserInfo findUserInfoByUsername(String username);
	
	/**
	 * 更新UserInfo对象
	 * @param userInfo
	 * 			UserInfo对象
	 * @return UserInfo
	 * 			UserInfo对象
	 */
	public UserInfo updateUserInfo(UserInfo userInfo);
	
	/**
	 * 根据主键ID获取UserInfo
	 * @param uid
	 * 			主键ID
	 * @return UserInfo
	 * 			UserInfo对象
	 */
	public UserInfo findUserInfoByUid(long uid);
	
	/**
	 * 根据主键ID获取Resume对象
	 * 
	 * @param id
	 * 			主键ID
	 * @return Resume
	 * 			Resume对象
	 */
	public Resume findResumeByUId(long uid);
	/**
	 * 保存Resume对象
	 * 
	 * @param resume
	 * 			Resume对象
	 * @return Resume
	 * 			Resume对象
	 */
	public Resume updateResume(Resume resume);
	
	/**
	 * 保存UserDetail对象
	 * 
	 * @param userDetail
	 * 			UserDetail对象
	 * @return UserDetail
	 * 			UserDetail对象
	 */
	public UserDetail updateUserDetail(UserDetail userDetail);
	
	/**
	 * 根据主键ID获取UserDetail对象
	 * 
	 * @param iid
	 * 			主键ID
	 * @return UserDetail
	 * 			UserDetail对象
	 */
	public UserDetail findUserDetailByUid(long uid);
	/**
	 * 根据主键ID获取Company对象
	 * 
	 * @param uid
	 * 			主键ID
	 * @return Company
	 * 			Company对象
	 */
	public Company findCompanyByUid(long uid);
	/**
	 * 保存Company对象
	 * 
	 * @param company
	 * 			Company对象
	 * @return Company
	 * 			Company对象
	 */
	public Company updateCompany(Company company);

}
